v2.1 — Performance Optimisation 7K Official Support

osu!mania 4K & 7K overlay

Know your Dan level
in real time.

Connects to tosu, reads your current map, and estimates its Dan tier live across five scoring modes: Reform, Celestial, Signicial, Shoegazer, and an automatic LN Course mode for maps with more than 45% long notes.

3 New Skins
7K 15 Dan tiers calibrated
Download for Windows v2.1 · Free · ~146.68 MB
Monolith Collapsed Monolith Expanded
COLLAPSED Monolith UI-4
Broadcast Collapsed Broadcast Expanded
COLLAPSED Broadcast UI-5
Vignette Collapsed Vignette Expanded
COLLAPSED Vignette UI-6
Alphaα
Betaβ
Gammaγ
Deltaδ
Epsilonε
Zetaζ
Etaη
Thetaθ
Iotaι
Kappaκ

Ten Reform tiers · α through κ · logos by icyilc

Three things it does.

No bells, no whistles. Just the data you actually want while playing.

01

Live Dan Estimation

Reads map SR, runs it through per-skillset calibration for each tier, and shows you where it lands. Updates automatically when you switch maps.

02

Skillset Classification

Powered by MinaCalc. Classifies your map as Jack, Stream, Tech or Stamina and surfaces sub-patterns like CJ · JS or STAM · HS.

03

Settings & Export Charts

Right-click the overlay or press Ctrl+, to open the settings panel — adjust blur, brightness, window size, skin, keybinds, and more. Press G to export a full-resolution density graph to your Desktop.

How to use it

Three things running at the same time. That's it.

1

Run osu!

Either osu! stable or osu! lazer — both work. Open it and have a 4K mania map selected.

2

Run tosu

A lightweight background process that reads live game data.

3

Run DanOverlay

Open the .exe. The overlay connects automatically and starts estimating Dan tiers for whatever map you're on.

Don't have tosu?

tosu is required for the overlay to read live game data. It's free, lightweight, and takes seconds to set up.

Download tosu from GitHub
✓ osu! stable — full support ⚠ osu! lazer — custom rate changes in HT/DT mods are not detected

Press G. Get a chart.

Click the overlay window and press G to generate a full-resolution density graph — complete NPS timeline with per-skillset MSD bars. Saved to your Desktop automatically.

It's not always right.

Straight answer: it works well most of the time, and then occasionally it'll confidently call your Zeta-tier speedjack map "Delta High" and act completely normal about it.

Wrong reads will happen

Anything with unusual density, hybrid patterns, or charts between two skillsets — the classifier can misfire. Sometimes badly. Vertex BETA used to land at Delta. That's fixed now. Others will too.

Genuinely absurd results are real

If it reads your Eta stamina marathon as "Alpha LOW" — that's not a glitch, it's just the algorithm having a terrible moment. No crash, no warning.

Getting patched, for real

Every bad call gets investigated. The goal is always a structural fix — not a special case for one map, but a change that handles that class of chart correctly.

It's like asking a friend who plays a ton of osu!mania to size up any map on the spot. Knows the Reform pack well, has strong opinions, solid gut reads — and occasionally says something completely unhinged. You still ask anyway.

The Speedjack Misread

Maps with dense speedjack patterns were misclassified as tech charts by up to two Dan tiers. Fixed.

Speedjacks produce a feature fingerprint nearly identical to chaos tech patterns. The classifier was routing maps through the wrong difficulty ruler.

The fix: when classifier confidence drops below 50% and MinaCalc's jack MSD dominates, the overlay defers to MinaCalc. Not a one-map hack — a structural change.

Vertex BETA (Silvia, by kasam53) was two Dans off consistently. It's now landing correctly.

It works now. Probably. We're like 90% sure.

Before — Delta HIGH After — Zeta LOW
BEFORE Delta HIGH

Under the hood.

The actual math behind the number it shows. Just the parts that matter.

One number isn’t enough.

A Zeta jack chart and a Zeta tech chart share a tier name but not a difficulty shape. Using a single SR mean per tier works on average — but it systematically misfires on anything that skews toward a specific skillset. DanOverlay uses four independent rulers, one per skillset, each calibrated separately against the official Reform pack.

Other approaches
DAN_MEANS = {
    "Alpha":   6.562,
    "Beta":    6.957,
    "Gamma":   7.459,
    "Delta":   7.939,
    "Epsilon": 9.095,
    "Zeta":    9.473,
}
# same ruler for every chart type
DanOverlay — rank_engine.py
_SKILLSET_SR_MEANS = {
    # 20 dans each · optimizer-calibrated
    "jack":    {"Alpha": 6.56, "Beta": 6.84, "Gamma": 7.05, ...},
    "speed":   {"Alpha": 6.56, "Beta": 6.82, "Gamma": 7.56, ...},
    "stamina": {"Alpha": 6.81, "Beta": 6.92, "Gamma": 7.35, ...},
    "tech":    {"Alpha": 6.93, "Beta": 6.94, "Gamma": 7.33, ...},
}

Speedjack maps get a second look. (experimental)

Speedjack charts produce a feature fingerprint nearly identical to chaos tech patterns. The classifier routes them into the tech ruler — and the tech ruler systematically underestimates same-column jack pressure by one or two tiers.

When a tech-labelled map shows very high Jbar peak pressure and Jbar dominates the component budget, the engine re-routes it through the jack ruler instead. Not a one-map patch — a structural rule.

Still figuring out exactly where to draw the threshold. Works well on the clearest cases. Edge maps are unpredictable.

rank_engine.py — speedjack_rescue
if family == "tech":
    jbar_max   = sr_result.get("jbar_max",   0.0)
    jbar_share = sr_result.get("jbar_share", 0.0)

    # Epsilon jack tops out ~Jbar 56.
    # Only Zeta+ speedjacks reach this zone
    # via the "tech" classification path.
    if jbar_max >= 70.0 and jbar_share >= 0.48:
        sj_dp = sr_to_dp(sr + bonus, skillset="jack")
        if sj_dp > dp:
            dp = sj_dp
            # re-routed: tech ruler → jack ruler

Not a lookup table.

SR doesn’t map to a discrete tier — it lands somewhere inside a tier’s range. The ruler places a calibrated SR mean at each dan, computes midpoint boundaries between adjacent means, then linearly interpolates the fractional position within that window.

The result is a continuous DP value that directly produces the sub-tier label. No fixed percentage bands. No separate sublevel table to maintain.

rank_engine.py — sr_to_dp()
def sr_to_dp(sr, skillset=None):
    ruler  = _get_ruler(skillset)
    bounds = _precompute_boundaries(ruler)
    # midpoint between adjacent calibrated SR means

    for lower, upper, dp_int in bounds:
        if lower <= sr < upper:
            t = (sr - lower) / (upper - lower)
            return float(dp_int) + t

    # SR 7.64  →  dp 13.73  →  Delta Mid-High
    # SR 9.61  →  dp 16.10  →  Zeta Low

Download DanOverlay

v2.1 · Standalone .exe · No install needed

Download for Windows ~146.68 MB

⚠️ Still in development — do not expect precise results. Scoring modes are experimental.

Windows 10/11 · osu! stable or lazer · tosu running · 4K or 7K map
Source code coming eventually. No timeline. It's embarrassing right now.

Changelog

Performance Optimisation

  • Calculation speed optimization — The analysis pipeline was optimized to eliminate freezes when navigating between beatmaps. Map switching is now much smoother!
  • Symmetrical adjustments to sublevels from low to high — Low to High sublevels have been adjusted with symmetry (20% bands) to ensure bars and text always match perfectly across all modes.

(well, on my shitty pc I didn't notice a difference in calculation speed but in theory it should work lol)

7K Support
3 New Skins
Celestial DP

osu!mania 7K — Official Support

  • 15 tiers calibrated — from 0th Dan through Stellium, sourced from 7K Regular Dan practice packs. Each tier has a median SR value enforcing strict monotonicity across the full scale. on 688 test maps using general means and 45 from the original maps.
  • Per-skillset SR means — Jack, Tech, Speed, Stream, and Hybrid rulers calibrated independently. Same architecture as the 4K Reform engine.
  • Sublevel detection — Low, Mid-Low, Mid, Mid-High, High — derived from fractional position within each tier's min/max range.
  • DP scale: 0th = 0.0 through Stellium = 14.0. Beyond Stellium displays as a distinct state.

Three New Skins

  • Vertical Monolith (ui-4) — Frosted glass card with circular SVG ring synced to DP fraction. Gradient dan name, 5 progressive sub-bars, ambient radial background that shifts per tier palette.
  • Broadcast Bar (ui-5) — Horizontal split layout designed for OBS. Colored left panel carries the DP as a large number; dark right panel shows the dan name as gradient text. Manual border brightness and thickness controls.
  • Vignette (ui-6) — Oversized typography. 10rem DP integer, 7rem rank name, rotated "DP" label, oval sub-bars, glass stats panel with tier-colored accent.
  • All three share: L-key expandable stats drawer, demo cycling mode, full settings panel integration, and registration in the skin switcher.

Celestial Mode — DP Scale

  • 35-slot continuous scale — DP runs from 1.0 (Beginner I) to 35.0 (Singularity V), matching the Reform engine's interpolation architecture.
  • Boundary interpolation on SR means gives fractional DP — confidence derived from position within each slot's range.
Download v2.0

Signicial Mode Improvements

  • Eta & Theta stages — Two new scales added to the Signicial scoring mode, with Greek symbol background images and custom colors. Thanks to the Signicial dan creator for the stage data and feedback.
  • Initial calibration pass for all 18 stages (I through Theta/θ).
  • Greek stage icons (Alpha through Theta) now display as background images when in Signicial mode.
  • Accuracy tracking implemented: ~48% on the 72-map test set. Future per-skillset rulers will improve this.

General

  • Frameless window mode — Toggle the window title bar from the settings panel (Ctrl+, → Visual → Frameless Window). Requires a restart to fully apply.
Download v1.8.1

New Features

  • Graph skin — New third visual design with a real-time NPS density chart. Inspired by the Daniel overlay. Switch skins anytime from the settings menu.
  • Custom window size — You can now type exact pixel dimensions in the settings panel. Note: the window size doesn't persist across restarts yet — you'll need to open settings and click Save after launching. The typed values do persist, just the resize step happens on Save only. I'll fix this soon.
  • Redesigned NPS chart generator — The export chart has been rebuilt with a cleaner Canvas renderer. Press G while the overlay is focused to generate one.

Calibration

  • General adjustments — Tier boundaries recalibrated for 1st through 9th Dan. Should be more consistent across all skillsets now.

Feedback

  • If you spot any issues or have suggestions, feel free to reach out on Discord: agent_ale. Always open to feedback!
Download v1.8 (old)

Calibration & Fixes

  • Reform SR means recalibrated — All tier boundaries updated against the official Reform pack. Accuracy improved noticeably across all skillsets.
  • Speedjack maps — Maps with dense speedjack patterns that were reading low due to a misclassification now get a correction pass. Results are better; still experimental.
  • Various minor SR adjustments and visual fixes carried over from v1.7 development.
Download v1.7.5 (old)

New Features

  • Dan Display Scale — New slider in Settings to resize the overlay elements.
  • LN Course manual toggle — Pin LN Course mode manually with Ctrl+5 regardless of map detection.

Bug Fixes

  • Several display and layout issues from v1.6 fixed across both skins.
  • BPM display, result text, and Settings panel resize issues corrected.
  • LN Course badge behavior fixed when switching maps.
Download v1.7

Modern skin — the new design

  • Added a new Modern skin — the current new layout is a compact single-row design with dan name, map info, and sublevel displayed side by side.
  • The Classic skin remains available as the original overlay style.
  • Both skins share all scoring modes, MSD data, and visual effects.
  • Switch at any time from the settings panel (Ctrl+, → Skin).

Settings Persistence

  • All visual settings (Blur, Brightness, Logo Size, Logo Opacity, Layout, Skin, Keybinds) are now saved to disk and restored on every launch.
  • Stored locally in %APPDATA%\DanOverlay\settings.json — no need to reconfigure after updates.
  • Fixed a race condition where settings could be silently lost on close.

Visual Customization

  • New Logo Size and Logo Opacity sliders in the settings panel to control the dan background watermark.
  • Changes apply live as you drag and are saved automatically.

Startup & Onboarding

  • The overlay now searches for tosu first on launch, then transitions to intro screens — no more splash appearing before connection.
  • Tutorial prompt has a new “Don’t show again” button persisted to disk.
  • The Quick Tutorial is accessible at any time from Ctrl+, → Help → Start.

Bug Fixes

  • Fixed settings panel layout breaking in the Modern skin (buttons floating outside the panel).
  • Fixed Celestial/Signicial/Shoegazer PNG paths in the Classic skin.
  • Fixed long Celestial tier names overflowing into the map column.
  • Fixed overlay staying blank after switching skins.
Download v1.6

Scoring Modes

  • Added 4 alternating scoring modes: Reform, Celestial, Signicial, and Shoegazer — each with a fully independent difficulty model, rank scale, and visual identity.
  • Switch modes on the fly: Ctrl+1 for Reform, Ctrl+2 for Celestial, Ctrl+3 for Signicial, Ctrl+4 for Shoegazer.
  • Each mode displays its own stage name, tier label, and progress bar calibrated to its specific rank ladder.

LN Course — Automatic Detection

  • New dedicated LN Course mode with a regression model trained on long-note density and hold patterns.
  • Activates automatically when the current map exceeds 45% LN ratio — no manual switching needed.
  • LN Course coexists with the 4 manual modes: it overrides the display only while a qualifying map is selected.

Beyond Ceiling

  • All 5 modes now support a Beyond suffix when difficulty exceeds the highest tier threshold.
  • The stage label stays visible — e.g. Tachyon — Beyond — instead of an empty or broken state.

Resize & Controls

  • Press R to toggle between Free resize (drag freely) and Locked resize (aspect-ratio enforced). Replaces the old streamer/personal mode picker.
  • Press Ctrl+R to reset the window to its default size instantly.
  • Press Tab to pin or unpin the overlay over osu!, keeping it fully interactive.

Intro & UI

  • New What's New splash screen on first launch after an update.
  • Interactive Scoring Modes hint screen — press Ctrl+14 to try each mode before the overlay starts.
  • Celestial mode icons resized for better visual balance.
  • Intensity bar removed in Shoegazer and Celestial modes (not applicable to those scales).

Compatibility

  • Added automatic WebView2 Runtime detection on startup. If it's missing, the overlay now shows a clear error dialog with a direct download link instead of opening a blank white window. (In theory it should work — I had nobody to test it with, lol. If you run into any issues, feel free to reach out on my Discord: agent_ale.)
  • Extended GPU compatibility flags to reduce rendering issues on certain hardware configurations.
Download v1.5
  • Calibration improvements for more accurate difficulty ratings
  • Refined rank boundary thresholds for smoother tier placement
  • Visual polish and layout refinements in the overlay panel
  • Minor stability improvements
Download this version
  • Fixed startup bridge race: map analysis no longer stucks on COMPUTING
  • Fixed first-map blackout: removed full black transition
  • Recalibrated Dan rulers with practice packs + Reform finals
  • Tuned Iota anchors and sublevel boundaries
  • Fixed speedjack misclassification regression
Download this version
  • Mode picker on launch: Personal or Stream mode
  • Stream mode: 840×384 window with 1.2× zoom for OBS
  • Personal mode: window stays on top of osu!
Download this version
  • Overlay window stays on top of osu!
  • Build script cleanup for PyInstaller 6
Download this version
  • Initial release
  • Live Dan tier estimation — Alpha through Kappa
  • Skillset classification: CJ · JS · STAM · HS · TECH
  • PNG chart export — full-res density graph
  • Fixed speedjack misclassification (Vertex BETA)
Download this version